﻿namespace Uhi.Applications.FileAid.Model
{
    #region IRecordInfo
    /// <summary>
    /// ファイルの 1 行分のデータを表す。
    /// </summary>
    public interface IRecordInfo
    {
        #region Filename
        /// <summary>
        /// ファイル名を取得する。
        /// </summary>
        string Filename { get; }
        #endregion

        #region Offset
        /// <summary>
        /// データの開始位置を取得する。
        /// </summary>
        int Offset { get; }
        #endregion

        #region Length
        /// <summary>
        /// データのレコード長を取得する。
        /// </summary>
        int Length { get; }
        #endregion

        #region Line
        /// <summary>
        /// データの行番号を取得する。
        /// </summary>
        /// <remarks>
        /// 先頭の行番号は 0。
        /// </remarks>
        int Line { get; }
        #endregion

        #region IsEdited
        /// <summary>
        /// データが変更済みかどうかを判定する値を取得、または設定する。
        /// </summary>
        bool IsEdited { get; set; }
        #endregion

        #region Record
        /// <summary>
        /// このインスタンスが表すレコードのデータを取得、または設定する。
        /// </summary>
        byte[] Record { get; set; }
        #endregion

        #region Save

        /// <summary>
        /// <see cref="Record"/> をファイルに書き込む。
        /// </summary>
        void Save();

        /// <summary>
        /// <see cref="Record"/> を指定したファイルに書き込む。
        /// </summary>
        /// <param name="path">ファイルの path。</param>
        void SaveAs(string path);

        #endregion
    }
    #endregion
}
